home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / ins_msb / 9203 / dirfun.bas < prev    next >
BASIC Source File  |  1992-02-06  |  2KB  |  56 lines

  1. ' DirFun.Bas - Directory entry manipulation package.
  2. '
  3. '$INCLUDE: 'QB.BI'
  4. '$INCLUDE: 'DIRFUN.BI'
  5.  
  6. DEFINT A-Z
  7.  
  8. DIM SHARED InRegsX AS RegTypeX
  9. DIM SHARED OutRegsX AS RegTypeX
  10.  
  11. FUNCTION FindFirst (Attr, FileName$, DEntry AS DirectoryRecord, _
  12.                          theDTA AS DataTransferArea)
  13. InRegsX.AX = &H4E00
  14. InRegsX.CX = Attr
  15.  
  16.  Spec$ = FileName$ + CHR$(0) ' Create an ASCIIZ version of string
  17.  InRegsX.DS = VARSEG(Spec$)  ' Load DS:DX with
  18.  InRegsX.DX = SADD(Spec$)    ' address of Spec$
  19.  InterruptX &H21, InRegsX, OutRegsX
  20.  
  21. ' The next line sets an error as default condition
  22.  
  23. FindFirst = OutRegsX.AX      ' assume an error
  24. IF (OutRegsX.Flags AND 1) = 0 THEN
  25.   TransferDTA2DIR DEntry, theDTA
  26.   FindFirst = 0              ' Clear the assumed error condition
  27. END IF
  28. END FUNCTION
  29.  
  30. FUNCTION FindNext (DEntry AS DirectoryRecord, theDTA AS DataTransferArea)
  31. theDTA.FileName = SPACE$(13)
  32. InRegsX.AX = &H4F00
  33. InterruptX &H21, InRegsX, OutRegsX
  34. FindNext = OutRegsX.AX
  35. IF (OutRegsX.Flags AND 1) = 0 THEN
  36.   TransferDTA2DIR DEntry, theDTA
  37.   FindNext = 0
  38. END IF
  39. END FUNCTION
  40.  
  41. SUB SetDTA (theDTA AS DataTransferArea)
  42. InRegsX.AX = &H1A00
  43. InRegsX.DS = VARSEG(theDTA)
  44. InRegsX.DX = VARPTR(theDTA)   'Use for records
  45. InterruptX &H21, InRegsX, OutRegsX
  46. END SUB
  47.  
  48. SUB TransferDTA2DIR (DEntry AS DirectoryRecord, _
  49.                      theDTA AS DataTransferArea)
  50. DEntry.FileName = theDTA.FileName
  51. DEntry.FileSize = theDTA.FileSize
  52. DEntry.FileDate = theDTA.FileDate
  53. DEntry.FileTime = theDTA.FileTime
  54. DEntry.FileAttb = ASC(theDTA.Attribute)
  55. END SUB
  56.